package com.unitd.app.param.controller;

import com.unitd.frame.sso.common.config.SSOConfig;
import com.unitd.frame.sso.common.config.SSOProperties;
import com.unitd.frame.sso.common.helper.SSOHelper;
import com.unitd.frame.sso.common.token.AuthToken;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

/**
 * @desc 代理登录,跨域中间状态处理
 * @filename TimeoutController.java
 * @copyright www.unitd.com
 * @author Hudan
 * @version 1.0
 * @date 2016/10/4
 */
@Controller
public class ProxyLoginController extends BaseController {

	/**
	 * @desc 跨域登录
	 * @param model SpringMVC前端请求数据模型
	 * @return
	 */
	@RequestMapping("/proxylogin")
	public String proxylogin(Model model) {
		// 获取SSO属性配置对象
		SSOProperties prop = SSOConfig.getSSOProperties();

		// 使用业务系统私钥签名, 获取authToken 并自动设置临时会话 cookie 授权后自动销毁
		AuthToken at = SSOHelper.askCiphertext(request, response, prop.get("sso.defined.my_private_key"));

		// uuid() 作为 key 设置 authToken 至分布式缓存中,然后 sso 系统二次验证; askurl 询问 sso 是否登录地址
		model.addAttribute("askurl", prop.get("sso.defined.askurl"));

		// askTxt 询问 token 密文
		model.addAttribute("askData", at.encryptAuthToken());

		// SSO客户端 确定是否登录成功地址
		model.addAttribute("okurl", prop.get("sso.defined.oklogin"));
		return "proxylogin";
	}
}